'use client' import { useState, useEffect, useCallback } from 'react' import httpBrowserClient from '@/lib/httpBrowserClient' import { useSession } from 'next-auth/react' import { redirect } from 'next/navigation' import { Loader, CheckCircle } from 'lucide-react' export default function CheckoutPage({ params }) { const [error, setError] = useState(null) const planName = params.planName as string const { data: session } = useSession() const initiateCheckout = useCallback(async (retries = 2) => { try { const response = await httpBrowserClient.post('/billing/checkout', { planName, }) if (response.data?.redirectUrl) { window.location.href = response.data?.redirectUrl } else { throw new Error('No redirect URL found') } } catch (error) { if (retries > 0) { initiateCheckout(retries - 1) } else { setError('Failed to create checkout session. Please try again.') console.error(error) } } }, [planName]) useEffect(() => { initiateCheckout() }, [initiateCheckout]) if (!session?.user) { return redirect(`/login?redirect=${window.location.href}`) } if (error) { return (
{error}
) } return (

Hang Tight!

We're processing your order. This won't take long!

Thank you for your patience!
) }